iT邦幫忙

DAY 15
2

C# 程式學習系列 第 15

C# 使用 SqlException

c#
  • 分享至 

  • xImage
  •  

對資料庫操作產生的例外情況,可使用 SqlException
對資料庫操作產生的例外情況,可使用 SqlException
SqlException 類別 : 當 SQL Server 傳回警告或錯誤時所擲回的例外狀況。
以下顯示 SqlException 與 Exception 對於資料庫例外狀況所顯示的錯誤訊息。

        private void Form1_Load(object sender, EventArgs e)
        {
            ShowSqlException("Data Source=127.0.0.1;Initial Catalog=ErrorDBName;User Id=ErrorID;Password=ErrorPWD;");
        }

        public static void ShowSqlException(string connectionString)
        {
            string queryString = "EXECUTE NonExistantStoredProcedure";
            StringBuilder errorMessages = new StringBuilder();

            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                SqlCommand command = new SqlCommand(queryString, connection);
                try
                {
                    command.Connection.Open();
                    command.ExecuteNonQuery();
                }
                //catch (SqlException ex)  // 使用 SqlException
                //{
                //    for (int i = 0; i < ex.Errors.Count; i++)
                //    {
                //        errorMessages.Append("Index #" + i + "\n" +
                //            "Message: " + ex.Errors[i].Message + "\n" +
                //            "LineNumber: " + ex.Errors[i].LineNumber + "\n" +
                //            "Source: " + ex.Errors[i].Source + "\n" +
                //            "Procedure: " + ex.Errors[i].Procedure + "\n");
                //    }
                //    MessageBox.Show(errorMessages.ToString());
                //} 
                catch (Exception ex)  // 使用 Exception
                {
                    MessageBox.Show(ex.ToString());
                }
            }
        }

上一篇
C# 在主控台應用程式顯示 MessageBox
下一篇
C# 表單關閉時,出現訊息視窗,確認是否關閉表單
系列文
C# 程式學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
外獅佬
iT邦大師 1 級 ‧ 2011-05-11 23:48:26

如果單純只用SqlException...錯誤代碼(Number屬性)只會包含第一個發生的錯誤代碼;錯誤訊息(Message屬性)則會串接所有錯誤訊息...
假設,同時執行多個指令,或者想要攔截每個錯誤,使用SqlException的SqlError成員是比較好的選擇。

我要留言

立即登入留言